﻿using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class Finger : MonoBehaviour
{
    public PuzzleSystem puzzleSystem;   // 移动时需要盘面上符石的资料，所有挂puzzleSystem来抓取资料
    private RectTransform rect; // finger的rectTransform
    public Vector2 initPos; // Finger初始化位置
    private Image image;    // Finger的Image
    private Color display = new Color(1, 1, 1, 0.5f); // 点击符石时，Finger的透明度
    private Color hide = new Color(1, 1, 1, 0); // 放开符石时，finger的透明度
    public Rune nowRune;  // 储存被点击符石的资料
    public bool moveState;  // Finger是否在移动中

    private void OnTriggerEnter2D(Collider2D other)   // 当Finger被触发时做符石交换
    {
        if (other.tag == "Rune")    // 将触发物件标签为Rune
        {
            if (nowRune == null || nowRune == other.GetComponent<Rune>())   // 点击符石但没有交换符石
            {
                other.GetComponent<Image>().color = hide;   // 隐藏点击的符石
                nowRune = other.GetComponent<Rune>();   // 将nowRune设为触发事件
            }
            else  // 代表目前觸發到的符石與nowRune不同，也就是開始移動交換珠子
            {
                moveState = true;
                // 做nowRune与触发符石的属性交换
                Rune.RuneType temp = other.GetComponent<Rune>().type;
                other.GetComponent<Rune>().type = puzzleSystem.runes[nowRune.number].type;
                puzzleSystem.runes[nowRune.number].type = temp;
                // 呼叫符石底下的函式ChangeImage換圖，並重新設定顯示顏色。
                other.GetComponent<Rune>().ChangeImage();
                other.GetComponent<Image>().color = hide;
                puzzleSystem.runes[nowRune.number].ChangeImage();
                puzzleSystem.runes[nowRune.number].GetComponent<Image>().color = Color.white;
                // 将nowRune设为触发物件
                nowRune = other.GetComponent<Rune>();
            }
            // 將Finger的圖片設為目前珠子的屬性圖片，並修改顯示顏色
            image.sprite = Resources.Load<Sprite>("RuneStone/" + other.GetComponent<Rune>().type);
            image.color = display;
        }
    }

    public void FingerInit()   // 初始化
    {
        rect.anchoredPosition = initPos;    // 初始化Finger的位置
        image.color = hide; // 图片预设为隐藏
        nowRune = null; // 点击符文预设为Null
        moveState = false;  // 移动状态为False
    }

    private void Start()
    {
        rect = GetComponent<RectTransform>();
        rect.sizeDelta = new Vector2(puzzleSystem.BGRect.sizeDelta.x / puzzleSystem.columnCount,
            puzzleSystem.BGRect.sizeDelta.y / puzzleSystem.rowCount);   // 初始化Finger的宽高，与finger相同
        image = GetComponent<Image>();
        FingerInit();
    }
}
